#ifndef FDEB_H
#define FDEB_H

#include "FDEBEdge.h"

struct FDEBOptions {
    int K = 4;     // 阶段数
    int C = 6;     // 每阶段迭代次数
    double S = 0.1; // 初始步长
};

// 运行完整 FDEB 算法
void runFDEB(std::vector<FDEBEdge>& edges, const FDEBOptions& options);

// 构建边之间的兼容列表
void buildCompatibilityLists(std::vector<FDEBEdge>& edges, double threshold = 0.6);

// 施加边之间的吸引力
void applyEdgeForces(std::vector<FDEBEdge>& edges, double stepSize = 0.1);

// 运行完整 FDEB 算法
void runFDEB(std::vector<FDEBEdge>& edges, const FDEBOptions& options);

// 将 FDEBEdge 列表输出为 CSV 文件
void writeBundledEdgesToCSV(const std::vector<FDEBEdge>& edges, const std::string& filename);

#endif // FDEB_H
